-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUser Design draft1.html
executable file
·39 lines (39 loc) · 12 KB
/
User Design draft1.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><!--This file was converted to xhtml by LibreOffice - see http://cgit.freedesktop.org/libreoffice/core/tree/filter/source/xslt for the code.--><head profile="http://dublincore.org/documents/dcmi-terms/"><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/><title xml:lang="en-US">- no title specified</title><meta name="DCTERMS.title" content="" xml:lang="en-US"/><meta name="DCTERMS.language" content="en-US" scheme="DCTERMS.RFC4646"/><meta name="DCTERMS.source" content="http://xml.openoffice.org/odf2xhtml"/><meta name="DCTERMS.creator" content="Michael "/><meta name="DCTERMS.issued" content="2014-09-23T12:36:21.288392154" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.contributor" content="Michael "/><meta name="DCTERMS.modified" content="2014-09-23T13:40:25.081666617" scheme="DCTERMS.W3CDTF"/><meta name="DCTERMS.provenance" content="" xml:lang="en-US"/><meta name="DCTERMS.subject" content="," xml:lang="en-US"/><link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" hreflang="en"/><link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" hreflang="en"/><link rel="schema.DCTYPE" href="http://purl.org/dc/dcmitype/" hreflang="en"/><link rel="schema.DCAM" href="http://purl.org/dc/dcam/" hreflang="en"/><style type="text/css">
@page { }
table { border-collapse:collapse; border-spacing:0; empty-cells:show }
td, th { vertical-align:top; font-size:12pt;}
h1, h2, h3, h4, h5, h6 { clear:both }
ol, ul { margin:0; padding:0;}
li { list-style: none; margin:0; padding:0;}
<!-- "li span.odfLiEnd" - IE 7 issue-->
li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }
span.footnodeNumber { padding-right:1em; }
span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000; margin:0; border:0; padding:0; }
* { margin:0;}
.Heading_20_3 { font-size:14pt; margin-bottom:0.212cm; margin-top:0.247cm; font-family:Liberation Sans; writing-mode:page; color:#808080; font-weight:bold; }
.P1 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:page; }
.P10 { font-size:130%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.423cm; font-family:Liberation Sans; writing-mode:page; }
.P11 { color:#808080; font-size:14pt; font-weight:bold; margin-bottom:0.212cm; margin-top:0.247cm; font-family:Liberation Sans; writing-mode:page; }
.P12 { color:#808080; font-size:14pt; font-weight:bold; margin-bottom:0.212cm; margin-top:0.247cm; font-family:Liberation Sans; writing-mode:page; }
.P2 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:page; }
.P3 { font-size:12pt; line-height:120%; margin-bottom:0.247cm; margin-top:0cm; font-family:Liberation Serif; writing-mode:page; }
.P4 { font-size:18pt; margin-bottom:0.212cm; margin-top:0.106cm; text-align:center ! important; font-family:Liberation Sans; writing-mode:page; }
.P5 { font-size:28pt; font-weight:bold; margin-bottom:0.212cm; margin-top:0.423cm; text-align:center ! important; font-family:Liberation Sans; writing-mode:page; }
.P6 { font-size:12pt; font-family:Liberation Serif; writing-mode:page; }
.P7 { font-size:12pt; font-family:Liberation Serif; writing-mode:page; }
.P8 { font-size:12pt; line-height:100%; margin-bottom:0cm; margin-top:0cm; font-family:Ubuntu Mono; writing-mode:page; }
.P9 { font-size:130%; font-weight:bold; margin-bottom:0.212cm; margin-top:0.423cm; font-family:Liberation Sans; writing-mode:page; }
.Table_20_Contents { font-size:12pt; font-family:Liberation Serif; writing-mode:page; }
.Text_20_body { font-size:12pt; font-family:Liberation Serif; writing-mode:page; margin-top:0cm; margin-bottom:0.247cm; line-height:120%; }
.Table1 { width:17cm; float:none; }
.Table1_A1 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:thin; border-top-style:solid; border-top-color:#000000; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
.Table1_A2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
.Table1_C1 { padding:0.097cm; border-width:thin; border-style:solid; border-color:#000000; }
.Table1_C2 { padding:0.097cm; border-left-width:thin; border-left-style:solid; border-left-color:#000000; border-right-width:thin; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:thin; border-bottom-style:solid; border-bottom-color:#000000; }
.Table1_A { width:3.607cm; }
.Table1_B { width:7.726cm; }
.Table1_C { width:5.667cm; }
<!-- ODF styles with no properties representable as CSS -->
.T1 { }
</style></head><body dir="ltr" style="max-width:21.001cm;margin-top:2cm; margin-bottom:2cm; margin-left:2cm; margin-right:2cm; writing-mode:lr-tb; "><p class="P5">User Design</p><p class="P4">Draft 1</p><p class="P1"> </p><h1 class="P9"><a id="a__End_User_"><span/></a>End User:</h1><p class="P1">The end user of my OS will mainly be interacting with applications that are running on top of my Kernal, however as the developer of the OS I can dictate how applications in my OS are presented, provide a number of OS level tools (program launcher, process manager), and provide a number of 'builtin' users space applications like a time application and a notes application. </p><p class="P1"> </p><p class="P1">The end user will have access to three contexts (or 'screens') they will be accessed by ctrl + 1, ctrl + 2, and ctrl + 3. There may also be other ways of navigating between these screens based upon user tests.</p><p class="P1"> </p><h3 class="P11"><a id="a__Screen_1__The_application_screen"><span/></a>Screen 1: The application screen</h3><p class="P1">Following is an example 'screen shot' of the application screen with some example applications running</p><p class="P8"> </p><p class="P8">Joe Bloggs 12:24</p><p class="P8">***********004****-PONG-****014********* Notes</p><p class="P8">* * |</p><p class="P8">* * | <span class="T1">Shopping list</span></p><p class="P8">* # 00 * | - <span class="T1">Eggs 12</span></p><p class="P8">* # 00 * | - <span class="T1">milk 2 Pints</span></p><p class="P8">* # * <span class="T1">| - bread (kingsmill)</span></p><p class="P8">* # * <span class="T1">|</span></p><p class="P8">* # * <span class="T1">|</span></p><p class="P8">* # * <span class="T1">|</span></p><p class="P8">****************************************</p><p class="P8"> </p><p class="Text_20_body">As you can s<span class="T1">ee in this example window, the user has 4 applications running, each occupying a non overlapping portion of the screen, the applications are:</span></p><p class="P2">Name : a simple app to show your username in the top left corner</p><p class="P2">Time : a time keeping app which shows the current time in the top centre of the screen</p><p class="P2">Notes : an app where users can write notes to themselves on the right of the screen</p><p class="P2">Pong : a simple 'tennis' game on the left of the screen.</p><p class="P2"> </p><h3 class="P12"><a id="a__Screen_2__Process_managent"><span/></a>Screen 2: Process managent</h3><p class="P2">On this screen there will be a list of all current proceses running on the computers, they will be odered by max or min value based upon one or more of the represented pieces of information (PID, memory, processor load), there will be available commands for killing, pausing and seeing each process in more detail.</p><p class="P2"> </p><h3 class="Heading_20_3"><a id="a__Screen_3__application_launching"><span/></a>Screen 3: application launching</h3><p class="P2">On this screen users will be able to launch applications and list available applications.</p><p class="P2"> </p><h1 class="P10"><a id="a__Application_Programmer_"><span/></a>Application Programmer:</h1><p class="P2">The application programmers are another class of 'users' for my OS, they have to be provided with a number of system calls to help them: gain access to resources, cooperate with other processes and fit in with the workflow of the OS.</p><p class="P2">The primary DIFFERENCE between an ordinary C program and a C Program that can be executed on my OS, is that programs on my OS MUST make a system call requesting a space on the application screen BEFORE any I/O. They must accept that if they space they requested is already occupied, the application may not be allowed to run.</p><p class="P2">Here is a list of the system calls I can currently come up with and a proposed prototype for each function:</p><table border="0" cellspacing="0" cellpadding="0" class="Table1"><colgroup><col width="158"/><col width="338"/><col width="248"/></colgroup><tr><td style="text-align:left;width:3.607cm; " class="Table1_A1"><p class="P6">Name</p></td><td style="text-align:left;width:7.726cm; " class="Table1_A1"><p class="P6">Action</p></td><td style="text-align:left;width:5.667cm; " class="Table1_C1"><p class="P6">Prototype</p></td></tr><tr><td style="text-align:left;width:3.607cm; " class="Table1_A2"><p class="Table_20_Contents"><span class="T1">Screen </span>request</p></td><td style="text-align:left;width:7.726cm; " class="Table1_A2"><p class="P6">Requests and reserves a portion of the application screen as the 'stdio' of this application</p></td><td style="text-align:left;width:5.667cm; " class="Table1_C2"><p class="P6">request_screen(int posx, int posy, int sizex, int sizey);</p></td></tr><tr><td style="text-align:left;width:3.607cm; " class="Table1_A2"><p class="P7">Screen map</p></td><td style="text-align:left;width:7.726cm; " class="Table1_A2"><p class="P7">Get a bitmap of the current screen allocation, this allows applications to check for space on the screen before requesting screen space</p></td><td style="text-align:left;width:5.667cm; " class="Table1_C2"><p class="P7">bool[][] get_allocation()</p></td></tr><tr><td style="text-align:left;width:3.607cm; " class="Table1_A2"><p class="P7">Relinquish control</p></td><td style="text-align:left;width:7.726cm; " class="Table1_A2"><p class="P7">Tell the Kernal that this application is finished doing things for now, and that it can be rescheduled later.</p><p class="P7">Timeout is the length of time this application wants to be ignored for:</p><p class="P7">> 0 is the time in ms</p><p class="P7">= 0 means that it wants to be scheduled again asap</p><p class="P7"> < 0 means that it never wants to be scheduled again, effectively pausting this application indefinately.</p></td><td style="text-align:left;width:5.667cm; " class="Table1_C2"><p class="P7">finishes(int timeout);</p></td></tr><tr><td style="text-align:left;width:3.607cm; " class="Table1_A2"><p class="P7">Wake application</p></td><td style="text-align:left;width:7.726cm; " class="Table1_A2"><p class="P7">Tell the kernal that it should now reschedule an application, this will wipe any timeout set by 'relinquish control' including infinite timeouts:</p><p class="P7">PID: the process id of the application that should be woken.</p></td><td style="text-align:left;width:5.667cm; " class="Table1_C2"><p class="P7">wake(int PID);</p></td></tr></table><p class="P3">This list of system calls is in no way complete, and it will be discused in more detail in my system design document.</p></body></html>